package com.lailai.entity;

/**
 * @Author lgr
 * @Date 2025/7/14
 * @Wechat a983105834
 * @Email 983105834@qq.com
 * @Copyright <a href="www.lailai.ink">lailai个人空间</a>
 */

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.List;

/**
 * 路由配置类，用于封装前端路由所需的完整配置信息
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("routes_config")
public class RouteConfig {
    /**
     * 主键ID
     */
    @TableField("id")
    private Long id;

    /**
     * 关联的路由ID
     */
    @TableField("route_id")
    private Long routeId;

    /**
     * 别名路由
     */
    @TableField("alias_of")
    private String aliasOf;

    /**
     * 导航守卫标识
     */
    @TableField("before_enter")
    private List<String> beforeEnter;

    /**
     * 页面标题
     */
    @TableField("title")
    private String title;

    /**
     * 图标（可选）
     */
    @TableField("icon")
    private String icon;

    /**
     * 所需角色权限列表
     */
    @TableField("roles")
    private List<String> roles;

    /**
     * 是否缓存页面
     */
    @TableField("no_cache")
    private Boolean noCache;

    /**
     * 是否始终显示
     */
    @TableField("affix")
    private Boolean affix;

    /**
     * 是否需要面包屑导航
     */
    @TableField("breadcrumb")
    private Boolean breadcrumb;

    /**
     * 是否隐藏路由
     */
    @TableField("hidden")
    private Boolean hidden;

    /**
     * 路由排序，用于排序路由。
     */
    @TableField("sort")
    private Integer sort;

    /**
     * 路由状态，0 表示正常，1 表示禁用。
     */
    @TableField("status")
    private Integer status;

    /**
     * 是否可见
     */
    @TableField("visible")
    private Boolean visible;

    /**
     * 是否需要认证
     */
    @TableField("requires_auth")
    private Boolean requiresAuth;

    /**
     * 是否保持活跃
     */
    @TableField("keep_alive")
    private Boolean keepAlive;

    /**
     * 路由权限列表
     */
    @TableField("permissions")
    private List<String> permissions;

    /**
     * 组件路径，用于加载路由组件。
     */
    @TableField("component_path")
    private String componentPath;

    /**
     * 创建时间
     */
    @TableField("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;
}
